Rubrique : Procurations
La section Proxies définit un bloc fonctionnel qui implémente le proxy.
Un proxy sert à l'échange de données de modules d'application différente. L'instance du FB proxy représente l'instance du module dans une application distante.
SEC Proxies                                    //optional: yes, modifier: [UPDATE]
    SEC Proxy : <identifier>                   //optional: yes, modifier [UPDATE]
            FB := <FB name>;                       //optional: no, type: QID
            SEC MirrorVar : <identifier>           //optional: yes, modifier [UPDATE])
                    Variable := <variable name>;       //optional: no, type: VarPath
            END_SEC
            SEC ProxyParameter : <target>          // optional: yes, modifier [UPDATE]
                    Variable := <InstancePath>;        // optional: no, type: VarPath
            END_SEC
    END_SEC
END_SECLes détails concernant la syntaxe des types de définition sont décrits dans la section Déclaration des modules.
Le bloc fonction doit dériver de
IBaseInstance.Le bloc fonction doit avoir une méthode
SetProxyIdentificationavec la signature suivante, qui n'est pas incluse dans l'interfaceIBaseInstance:SetProxyIdentification(pbyName : POINTER TO BYTE, udiComAddr : UDINT, udiLocalComAddr : UDINT, pEnvironment : MEnv)Le nom d'instance passé et l'adresse définie doivent être renvoyés à partir des propriétés
InstanceName,ComAddress, etLocalComAddress.Le bloc fonction ne doit pas dériver de
IModule.La section
MirrorVarpermet de refléter une variable d'instances de module sur ses instances proxy. Pour cela, le chemin d'instance de la variable doit être déclaré dans la définitionVariable, qui doit être indiqué sous la forme d'un chemin relatif (à l'instance de module FB). Les règles suivantes s'appliquent à la variable spécifiée de l'instance de module FB :La variable doit faire partie des variables, entrées ou sorties du FB de l'instance de module.
Il doit être défini dans le module FB ainsi que dans le proxy FB
Il doit être du même type dans les deux FB
Il doit avoir un type primitif ; ainsi, aucun pointeur, interface ou structure dans son ensemble n'est autorisé pour la mise en miroir, mais seuls les types simples (numeric, STRING, TIME, etc.)
Si les variables spécifiées remplissent ces conditions, elles sont automatiquement transférées dans le cadre du RMP sans que l'utilisateur ait à se soucier davantage du transfert.
La section
ProxyParameterpermet de définir des paramètres pour le proxy. Les points suivants doivent être pris en compte :La cible de la
ProxyParameterdoit correspondre à un paramètre cible du modulele
variabledu module proxy doit correspondre au type de la variable utilisée pour le paramètre module. Seuls les types primitifs et les énumérations sont autorisésLes paramètres proxy sont définis une fois sur la valeur configurée dans l'instance de module lors de la phase d'initialisation de l'application respective. Pendant que l'application est en cours d'exécution, ces variables ne sont pas reflétées dans les proxys
Le nom du bloc fonction peut être qualifié par un chemin d'espace de noms.
SEC Proxies
        SEC Proxy ProxyFB1
                FB := ProxyModule1;
                SEC MirrorVar : diInput
                        Variable := diInput;
                END_SEC
                SEC ProxyParameter : InParam1
                        Variable := TL.Input1_Name;
                END_SEC
        END_SEC
END_SEC